package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// 顶已接收数据的结构体

type Login struct{
	// binding:"required"修饰的字段，若接收为空值，则报错，是必须字段
	User string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"`
	Password string `form:"password" json:"password" uri:"password" xml:"password" binding:"required"`
}

func main(){
	r := gin.Default()
	/*
	// JSON绑定
	r.POST("loginJSON", func(c *gin.Context) {
		// 声明接收的变量
		var json Login
		// 将request的body中的数据，自动按照json格式解析到结构体
		if err := c.ShouldBindJSON(&json);err != nil{
			// 返回错误信息
			// gin.H 封装了生成json数据的工具
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}
		// 判断用户名密码是否正确
		if json.User != "root" || json.Password != "admin"{
			c.JSON(http.StatusBadRequest, gin.H{"status": "304"})
			return
		}
		c.JSON(http.StatusOK, gin.H{"status": "200"})
	})
	*/

	//r.POST("/loginForm", func(c *gin.Context) {
	r.POST("/:user/:password", func(c *gin.Context) {
		// 声明接收的变量
		var login Login
		//Bind()默认解析并绑定form格式
		// 根据请求头中context-type自动推断
		//if err := c.Bind(&form); err != nil{
		//	c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		//	return
		//}

		if err := c.ShouldBindUri(&login); err != nil{
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		// 判断用户名密码是否正确
		if login.User != "root" || login.Password != "admin"{
			c.JSON(http.StatusBadRequest, gin.H{"status": "304"})
			return
		}
		c.JSON(http.StatusOK, gin.H{"status": "200"})
	})
	r.Run(":8000")

}
